﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Stimulsoft.Report;
using Portal.Web.Global;
using Portal.Web.Framework;
using Portal.AssetTn.Model;
using Portal.Core;

namespace Portal.Gui.Web.WebParts.AssetTn
{
    public class PrintDocSienceTemporary : WebPart
    {
        public override string WebPartId
        {
            get
            {
                return "AssetTN.PrintDocSienceTemporary";
            }
        }

        public override WebPartServiceCls WebPartService
        {
            get
            {
                return AssetUtility.WebPartService;
            }
        }

        public override string Title
        {
            get
            {
                return "In sổ tài liệu khoa học phụ";
            }
        }

        public override string Description
        {
            get
            {
                return "";
            }
        }


        public override string RenderWebPart(LoadParamCls loadParamCls)
        {
            try
            {
                string SiteId = loadParamCls.SiteId;
                Environments.CheckSessionTimeOut(true);
                
                Permission.CheckPermission(
                     SiteId,
                     Environments.CurrentLoginUser.LoginName,
                     Portal.AssetTn.Security.Permission.GetPermissionId(),
                     Portal.AssetTn.Security.Permission.ePermisionType.Portal_AssetTn_Main.ToString(),
                     Portal.AssetTn.Security.Permission.eFunction.Portal_AssetTn_Report.ToString(),
                     Portal.AssetTn.Security.Permission.GetPermissionId(),
                     null,
                     true);

                bool VisibleSearchForm = true;
                string SessionId = (string)Environments.Request("SessionId");
                if (string.IsNullOrEmpty(SessionId))
                {
                    SessionId = System.Guid.NewGuid().ToString();
                }
                else
                {
                    VisibleSearchForm = false;
                }
                string Subject = loadParamCls.RefTitle;
                if (string.IsNullOrEmpty(Subject))
                {
                    Subject = Title;
                }

                #region
                //string RetHtml =
                //        " <script language=javascript>\r\n" +
                //        "   function ClientExport()\r\n"+
                //        "   {\r\n"+
                //        "       SiteId='"+SiteId+"';\r\n"+
                //        "       SessionId =  document.getElementById('txtSessionId').value;\r\n" +
                //        "       AjaxReturn  =  Portal.Gui.Web.WebParts.AssetTn.AssetTN_PrintTemporary.ServerSidePrint(SiteId,SessionId).value;\r\n" +
                //        "       if(AjaxReturn.Error)\r\n"+
                //        "       {\r\n"+
                //        "           alert(AjaxReturn.InfoMessage);\r\n"+
                //        "           return;\r\n"+
                //        "       }\r\n"+
                //        "       window.open(AjaxReturn.RetUrl,'_self');\r\n"+
                //        "   }\r\n"+
                //        " </script>\r\n" +
                //        " <div id=\"" + loadParamCls.Id + "\"> \r\n" +
                //        " <input id=txtSessionId type=hidden value=\""+SessionId+"\">\r\n"+
                //        " <input id=txtLoadFromBackEnd value=\"" + (loadParamCls.LoadFromBackend ? "1" : "0") + "\" type=\"hidden\">\r\n" +
                //        " <input id=txtExportOption value=\"pdf\" type=hidden>\r\n" +
                //        " <table class=\"il_Block\" datatable=\"0\">\r\n" +
                //        " <tbody>\r\n";
                //if (loadParamCls.VisibleTitle)
                //{
                //    RetHtml +=
                //        " <tr>\r\n" +
                //        "     <td class=\"ilBlockHeaderBig\" colspan=\"1\">\r\n" +
                //        "       <div style=\"float:left;\">\r\n" +
                //        "         <h3 class=\"ilBlockHeader\"><a class=\"ilAccAnchor\" name=\"" + loadParamCls.Id + "_blhead\" id=\"" + loadParamCls.Id + "_blhead\">" + Subject + "</a></h3> <span id=\"" + loadParamCls.Id + "_loader\"></span>\r\n" +
                //        "       </div>\r\n" +
                //        "     </td>\r\n" +
                //        " </tr>\r\n";
                //}

                //RetHtml +=
                //        "   <tr class=\"tblrow1\">\r\n" +
                //        "       <td style=\"padding:4px;\">\r\n"+
                //        "       <h1>In sổ bảo quản</h1>\r\n" +
                //        "           <table>\r\n"+
                //        "               <tr>\r\n"+
                //        "                   <td style=\"width:150px;valign:top;\"><img style=\"width:150px;float:left;\" border=\"0\" src=\"./templates/default/images/print_large.png\"></td>\r\n" +
                //        "                   <td style=\"valign:top;\">\r\n" +
                //        "                       Chức năng này cho phép in danh sách sổ bảo quản tạm thời của toàn bộ hệ thống hiện vật có trong cơ sở dữ liệu:"+
                //        "                       <ul style=\"margin-left:10px;\">\r\n" +
                //        "                           <li>Hệ thống hỗ trợ các định dạng xuất dữ liệu ra các dạng như pdf hoặc excel</li>\r\n" +
                //        "                           <li>Trong trường hợp cần in chính xác như bản gốc hãy chọn xuất ra pdf</li>\r\n" +
                //        "                           <li>Xuất ra excel trong trường hợp muốn lấy dữ liệu đầu ra để chỉnh sửa phục vụ việc khác</li>\r\n" +
                //        "                       </ul>\r\n" +
                //        "                       <input type=button class=button value=\"Thực hiện xuất dữ liệu\" onclick=\"javascript:ClientExport();\"></td>\r\n" +
                //        "                   </td>\r\n"+
                //        "               </tr>\r\n"+
                //        "           </table>\r\n"+
                //        "       </td>\r\n"+
                //        "   </tr>\r\n"+
                //        "  </tbody>\r\n" +
                //        "</table>\r\n" +
                //        "</div>\r\n" +
                //        "<div id=divProcessing></div>\r\n"+
                //        "<div id=divSearchResult>\r\n" +
                //        "</div>\r\n";

                //return RetHtml;
                #endregion
                string RetHtml = AssetRenderPrintBll.Render(SessionId, "print", WebPartId, SiteId, "tailieukhoahocphu", "Điều kiện in sổ tài liệu khoa học phụ", "print_large.png", "so-tai-lieu-khoa-hoc-phu.mrt", false, VisibleSearchForm);
                return RetHtml;
            }
            catch (Exception ex)
            {
                return ex.Message.ToString();
            }
        }


        [AjaxPro.AjaxMethod]
        public AjaxReturn ServerSidePrint(string SiteId,string SessionId)
        {
            AjaxReturn oAjaxReturn = new AjaxReturn();
            try
            {
                //doan nay tim kiem
                Environments.CheckSessionTimeOut(true);
                DataSet dsResult = null;
                AssetModel[] AssetModels = AssetBll.Search(SiteId, "sobaoquantamthoi", null,"ClassCode","ClassCode","ASC", ref dsResult);
                if (AssetModels.Length == 0) throw new Exception("Không có dữ liệu để in sổ!");
                dsResult.Tables[0].TableName = "TableAssetList";
                dsResult.DataSetName = "TableAssetList";
                ReportServiceBll.SaveData(SiteId,Environments.CurrentLoginUser.LoginName, dsResult, SessionId);
                //oAjaxReturn.RetUrl = "Print.aspx?SessionId="+SessionId;
                oAjaxReturn.RetUrl = "Print.aspx?wpid=" + WebPartId + "&SessionId=" + SessionId;
            }
            catch (Exception ex)
            {
                oAjaxReturn.Error = true;
                oAjaxReturn.InfoMessage = ex.Message.ToString();
            }
            return oAjaxReturn;
        }

        public override void RegAjaxPro(System.Web.UI.Page ActivePage)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(PrintDocSienceTemporary));
            AjaxPro.Utility.RegisterTypeForAjax(typeof(AssetRenderPrintBll));                
        }
    }
}
